home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-09-17 | 20.0 KB | 579 lines | [TEXT/MPS ] |
- //========================================================================================
- //
- // File: FWPart.h
- // Release Version: $ ODF 2 $
- //
- // Copyright: (c) 1993 - 1996 by Apple Computer, Inc., all rights reserved.
- //
- //========================================================================================
-
- #ifndef FWPART_H
- #define FWPART_H
-
- #ifndef FWEVENTH_H
- #include "FWEventH.h"
- #endif
-
- #ifndef FWPRTDEF_H
- #include "FWPrtDef.h"
- #endif
-
- #ifndef FWWINDOW_H
- #include "FWWindow.h"
- #endif
-
- #ifndef FWVIEWS_K
- #include "FWViews.k"
- #endif
-
- // ----- Foundation Includes -----
-
- #ifndef FWPSTR_H
- #include "FWPStr.h"
- #endif
-
- #ifndef FWTCOLL_H
- #include "FWTColl.h"
- #endif
-
- // ----- OpenDoc Includes -----
-
- #ifndef SOM_ODPart_xh
- #include <Part.xh>
- #endif
-
- //========================================================================================
- // Forward Declarations
- //========================================================================================
-
- class ODFrame;
- class ODWindow;
- class ODSession;
- class ODDraft;
-
- class FW_CFrame;
- class FW_CSelection;
- class FW_CPoint;
- class FW_CMenuBar;
- class FW_CEventDispatcher;
- class FW_CCommand;
- class FW_CPrivOrderedCollection;
- class FW_CCloneInfo;
- class FW_CPullDownMenu;
- class FW_CWindow;
- class FW_CPresentation;
- class FW_CExtensionManager;
- class FW_CLinkManager;
- class FW_CIdler;
- class FW_CSemanticInterface;
- class FW_CKind;
-
- class FW_CPrintInfo;
- class FW_CPresentationCollection;
- class FW_CContent;
- class FW_CDataInterchange;
-
- //========================================================================================
- // class FW_CPart
- //========================================================================================
-
- class FW_CPart : public FW_MEventHandler
- {
- friend class ODFModule_FW_SOMPart;
- friend class FW_CPartPresentationIterator;
- friend class FW_CPartFrameIterator;
- friend class FW_CPartLinkSourceIterator;
- friend class FW_CPartLinkDestIterator;
- friend class FW_CPartKindIterator;
- friend class FW_CIdler;
-
- public:
- FW_DECLARE_CLASS
- FW_DECLARE_AUTO(FW_CPart)
-
- //----------------------------------------------------------------------------------------
- // Initialization/Destruction
- //
- public:
- FW_CPart(ODPart* odPart,
- FW_Instance partInstance,
- FW_ResourceID partInfoID);
-
- virtual void Initialize(Environment *ev, ODStorageUnit* storageUnit, FW_Boolean fromStorage);
- virtual ~FW_CPart();
-
- //----------------------------------------------------------------------------------------
- // Inherited from FW_MEventHandler
- //
- public:
- virtual FW_Handled HandleAdjustMenus(Environment *ev,
- FW_CMenuBar* menuBar,
- FW_Boolean hasMenuFocus,
- FW_Boolean isRoot);
- virtual FW_Handled HandleMenu(Environment* ev,
- const FW_CMenuEvent& theMenuEvent);
-
- //----------------------------------------------------------------------------------------
- // New API
- //
- public:
- //--------------------------------------------------------------------------
- // Methods from ODPart
- ODStorageUnit* GetStorageUnit(Environment *ev) const;
-
- virtual void Release(Environment *ev);
- virtual void ReleaseAll(Environment *ev);
-
- FW_Boolean GetPartName(Environment *ev, FW_CString& partName) const;
- // Returns true if the part has a name. Returns false otherwise and partName is
- // then set to the name in the partInfo resource
-
- virtual ODSize Purge(Environment *ev, ODSize size);
-
- //--------------------------------------------------------------------------
- // Draft
-
- virtual FW_Boolean IsReadOnly(Environment* ev) const;
- ODDraft* GetDraft(Environment* ev) const;
-
- //--------------------------------------------------------------------------
- // Presentation
-
- FW_CPresentation* RegisterPresentation(Environment *ev,
- ODType presentationType,
- FW_Boolean defaultPresentation,
- FW_CSelection* selection = NULL); // Without view resources
- FW_CPresentation* RegisterPresentation(Environment *ev,
- ODType presentationType,
- FW_Boolean defaultPresentation,
- FW_ResourceID viewResourceID,
- FW_ResourceID rootViewResourceID,
- FW_CSelection* selection = NULL); // With view resources
-
- virtual FW_CPresentation* ValidatePresentation(Environment *ev,
- ODFrame* odFrame,
- FW_CPresentation *proposedPresentation) const;
- FW_CPresentation* FindPresentation(Environment *ev,
- ODTypeToken presentationType) const;
-
- //--------------------------------------------------------------------------
- // Frame
-
- virtual FW_CFrame* NewFrame(Environment *ev,
- ODFrame* odFrame,
- FW_CPresentation* presentation,
- FW_Boolean fromStorage) = 0;
-
- FW_Boolean IsValidDisplayFrame(Environment *ev,
- ODStorageUnitID displayFrameID) const;
-
- FW_Boolean HasSelectionFocus(Environment *ev) const;
-
- //--------------------------------------------------------------------------
- // Menus
-
- virtual void InstallMenus(Environment *ev, FW_CMenuBar* menuBar);
- virtual FW_Handled DoAbout(Environment *ev);
-
- //--------------------------------------------------------------------------
- // Getters/Setters
-
- ODPart* GetODPart(Environment *ev) const;
-
- FW_CFrame* GetLastActiveFrame(Environment *ev) const;
-
- ODFacet* GetActiveFacet(Environment *ev) const;
-
- FW_CMenuBar* GetMenuBar(Environment *ev) const;
-
- unsigned long CountDisplayFrame(Environment *ev) const;
-
- FW_Instance GetPartInstance(Environment *ev) const;
- FW_ResourceID GetViewAsIconID(Environment *ev) const;
-
- FW_CEventDispatcher* GetEventDispatcher(Environment *ev) const;
-
- void SetPrintInfo(FW_CPrintInfo* printInfo);
- FW_CPrintInfo* GetPrintInfo() const;
- virtual void PrintInfoChanged(Environment *ev, FW_CPrintInfo* printInfo);
-
- void SetAboutString(const FW_CString& string);
-
- //--------------------------------------------------------------------------
- // Change
-
- void Changed(Environment *ev);
-
- //--------------------------------------------------------------------------
- // Linking
-
- virtual FW_CLinkManager* NewLinkManager(Environment* ev);
- FW_CLinkManager* GetLinkManager(Environment* ev) const;
-
- virtual void LinkStatusChanged(Environment *ev, ODFrame* odFrame);
-
- //--------------------------------------------------------------------------
- // Kind Management
- virtual void ExternalizeKinds(Environment *ev, ODTypeList* kindset);
-
- FW_CKind* RegisterKind(Environment *ev,
- ODValueType kind,
- FW_StorageKinds storageKind,
- FW_ImportExport importExport);
- FW_CKind* RegisterKind(Environment *ev,
- ODPlatformType platformType,
- ODPlatformTypeSpace typeSpace,
- FW_StorageKinds storageKind,
- FW_ImportExport importExport);
-
- FW_CKind* GetKind(Environment* ev, ODType type) const;
-
- FW_CKind* GetSupportedKind(Environment *ev,
- ODStorageUnit *su,
- FW_StorageKinds storageKind) const;
-
- FW_CKind* GetPartKind(Environment *ev) const;
- FW_CKind* GetPreferredKind(Environment *ev) const;
-
- FW_Boolean ChangePreferredKind(Environment *ev, FW_CKind* newPreferredKind);
-
- //--------------------------------------------------------------------------
- // Externalize/Internalize Content
-
- virtual FW_CContent* NewPartContent(Environment* ev) = 0;
-
- virtual void ExternalizeContent(Environment *ev,
- ODStorageUnit* storageUnit,
- FW_CCloneInfo* cloneInfo);
- // Should never have to be overriden. Use your content object instead
- virtual FW_Boolean InternalizeContent(Environment *ev,
- ODStorageUnit* storageUnit,
- FW_CCloneInfo* cloneInfo);
- // Should never have to be overridden. Use your content object instead
-
- // ----- Cloning -----
- virtual void CloneInto(Environment *ev,
- ODDraftKey key,
- ODStorageUnit* toSU,
- ODFrame* scope);
-
- // ----- Content Property Prepping -----
- virtual void PrepContentProperty(Environment *ev,
- ODStorageUnit* storageUnit,
- FW_StorageKinds storageKind,
- FW_Boolean allSupportedKinds);
- // Should not have to be overriden
- virtual void AddAnnotationProperties(Environment *ev,
- ODStorageUnit* storageUnit,
- FW_StorageKinds storageKind);
- // Override AddAnnotationProperties to add other properties/values than the registered one
-
- FW_CContent* GetContent(Environment* ev) const;
- FW_CDataInterchange* GetDataInterchange(Environment* ev) const;
-
- virtual void ChangeKind(Environment* ev, ODType kind);
-
- //--------------------------------------------------------------------------
- // View In Window
- ODID OpenPartWindow(Environment* ev, FW_CFrame* sourceFrame, ODFacet* sourceFacet);
-
- FW_CFrame* GetPartWindowFrame(Environment* ev) const;
- FW_CWindow* GetPartWindow(Environment* ev) const;
-
- //--------------------------------------------------------------------------
- // Extensions
-
- FW_CExtensionManager* GetExtensionManager(Environment *ev) const;
-
- //--------------------------------------------------------------------------
- // Scripting
-
- virtual void InstallScriptingCallbacks(Environment* ev);
- FW_CSemanticInterface* GetSemanticInterface(Environment* ev) const;
-
- //--------------------------------------------------------------------------
- // Optional Factory Methods - Should not have to be overridden under normal circumstances
- virtual FW_CPresentation* NewPresentation(Environment *ev,
- FW_CSelection* selection,
- ODTypeToken presentationType,
- FW_ResourceID viewResourceID,
- FW_ResourceID rootViewResourceID);
- virtual FW_CDataInterchange* NewDataInterchange(Environment* ev);
- virtual FW_CEventDispatcher* NewEventDispatcher(Environment *ev);
- virtual FW_CWindow* NewDocumentWindow(Environment* ev);
-
- //----------------------------------------------------------------------------------------
- // Internal API (you should never have to call them)
- //
- public:
- virtual void PrivSetLastActiveFrame(FW_CFrame* lastActiveFrame);
- void PrivEnableMenuBar(Environment *ev, FW_Boolean enable, FW_Boolean appleMenu);
-
- // ----- Presentation Management -----
- FW_CPresentation* PrivGetPresentation(Environment *ev, ODFrame* odFrame) const;
- void PrivAddPresentation(FW_CPresentation* presentation);
- void PrivRemovePresentation(FW_CPresentation* presentation);
-
- // ----- Frame Management -----
- void PrivDisplayFrameRemoved(Environment *ev, ODFrame* frame, FW_Boolean toStorage);
-
- // ----- Idle Management -----
- void PrivCountIdleRegistering(FW_Boolean registering);
-
- // ----- Session Globals -----
- void PrivInitGlobals(Environment *ev, ODStorageUnit* storageUnit);
- void PrivReleaseGlobals();
-
- //----- Extensions -----
- void PrivSetExtensionManager(FW_CExtensionManager* manager);
-
- //----- Scripting -----
- void PrivSetSemanticInterface(FW_CSemanticInterface* semInt);
-
- void PrivSetDirty(Environment *ev, FW_Boolean state);
- void PrivNeedPrepping(Environment *ev, FW_Boolean state);
-
- // ----- Preferred Kind -----
- void PrivDeterminePreferredKind(Environment* ev, ODStorageUnit* storageUnit);
-
- // ----- View in Window -----
- void PrivInvalidateIconizedFrames(Environment *ev);
-
- // ----- Error Notification -----
- void PrivShowErrorAlert(Environment* ev, short stringResID, short messageID);
-
- //----------------------------------------------------------------------------------------
- // Data members
- //
- public:
- static unsigned short fgSessionGlobalsCount;
-
- static ODTypeToken fgSelectionFocusToken;
- static ODTypeToken fgMenuFocusToken;
- static ODTypeToken fgKeyFocusToken;
- static ODTypeToken fgModalFocusToken;
- static ODTypeToken fgClipboardFocusToken;
- static ODTypeToken fgScrollingFocusToken;
- static ODTypeToken fgMouseFocusToken;
- static ODTypeToken fgViewAsFrameToken;
- static ODTypeToken fgViewAsSmallIconToken;
- static ODTypeToken fgViewAsLargeIconToken;
- static ODTypeToken fgViewAsThumbnailToken;
-
- private:
- ODPart* fODPart;
-
- // [HLX] could be globals
- FW_ResourceID fPartInfoID; // Part Info resource ID
- FW_ResourceID fViewAsIconID; // Default View As Icon ID
- FW_ResourceID fDocumentWindowID; // Resource ID for the document window resource
- FW_CString fPartUserName; // user name
- FW_CString fAboutString; // "About PartName..." for menu item
-
- short fIdleCount;
- short fModalDialogCount; // number of nested modal dialogs
-
- FW_CMenuBar* fMenuBar; // This is the current menubar
- FW_CFrame* fLastActiveFrame;
- FW_TOrderedCollection<FW_CPresentation>* fPresentations;
- FW_CPresentation* fDefaultPresentation;
-
- FW_Instance fPartInstance;
- FW_CIdler* fIdler; // Idler object attached to the part (NULL if part not registered)
-
- FW_CLinkManager* fLinkManager; // NULL if Part doesn't create Links
-
- FW_CEventDispatcher* fEventDispatcher; // Event Dispatcher
-
- FW_CExtensionManager* fExtensionManager;
-
- FW_CSemanticInterface* fSemanticInterface;
-
- FW_CPrintInfo* fPrintInfo; // May be NULL
-
- FW_CContent* fContent;
- FW_CDataInterchange* fDataInterchange;
-
- FW_Boolean fNeedPrepping;
-
- FW_TOrderedCollection<FW_CKind>* fKinds;
- FW_CKind* fPartKind; // cached part kind
- FW_CKind* fPreferredKind; // cached preferred kind
-
- FW_CFrame* fPartWindowFrame;
- };
-
- //========================================================================================
- // Inlines
- //========================================================================================
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetEventDispatcher
- //----------------------------------------------------------------------------------------
- inline FW_CEventDispatcher* FW_CPart::GetEventDispatcher(Environment*) const
- {
- return fEventDispatcher;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetPartInstance
- //----------------------------------------------------------------------------------------
- inline FW_Instance FW_CPart::GetPartInstance(Environment*) const
- {
- return fPartInstance;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetViewAsIconID
- //----------------------------------------------------------------------------------------
- inline FW_ResourceID FW_CPart::GetViewAsIconID(Environment*) const
- {
- return fViewAsIconID;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetStorageUnit
- //----------------------------------------------------------------------------------------
- inline ODStorageUnit* FW_CPart::GetStorageUnit(Environment *ev) const
- {
- return fODPart->GetStorageUnit(ev);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetLastActiveFrame
- //----------------------------------------------------------------------------------------
- inline FW_CFrame* FW_CPart::GetLastActiveFrame(Environment*) const
- {
- return fLastActiveFrame;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetMenuBar
- //----------------------------------------------------------------------------------------
- inline FW_CMenuBar* FW_CPart::GetMenuBar(Environment*) const
- {
- return fMenuBar;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetODPart
- //----------------------------------------------------------------------------------------
- inline ODPart* FW_CPart::GetODPart(Environment*) const
- {
- return fODPart;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::PrivSetExtensionManager
- //----------------------------------------------------------------------------------------
- inline void FW_CPart::PrivSetExtensionManager(FW_CExtensionManager* manager)
- {
- fExtensionManager = manager;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetExtensionManager
- //----------------------------------------------------------------------------------------
- inline FW_CExtensionManager* FW_CPart::GetExtensionManager(Environment*) const
- {
- return fExtensionManager;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPart::GetLinkManager
- //----------------------------------------------------------------------------------------
- inline FW_CLinkManager* FW_CPart::GetLinkManager(Environment*) const
- {
- return fLinkManager;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::PrivSetSemanticInterface
- //----------------------------------------------------------------------------------------
- inline void FW_CPart::PrivSetSemanticInterface(FW_CSemanticInterface* semInt)
- {
- fSemanticInterface = semInt;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetSemanticInterface
- //----------------------------------------------------------------------------------------
- inline FW_CSemanticInterface* FW_CPart::GetSemanticInterface(Environment*) const
- {
- return fSemanticInterface;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPart::GetContent
- //----------------------------------------------------------------------------------------
- inline FW_CContent* FW_CPart::GetContent(Environment*) const
- {
- return fContent;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPart::GetDataInterchange
- //----------------------------------------------------------------------------------------
- inline FW_CDataInterchange* FW_CPart::GetDataInterchange(Environment*) const
- {
- return fDataInterchange;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::PrivSetLastActiveFrame
- //----------------------------------------------------------------------------------------
- inline void FW_CPart::PrivSetLastActiveFrame(FW_CFrame* lastActiveFrame)
- {
- // this is the frame which takes the selection focus when the part is active
- // (it is not set to NULL when the part becomes inactive)
- fLastActiveFrame = lastActiveFrame;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPart::GetPartKind
- //---------------------------------------------------------------------------------------
- inline FW_CKind* FW_CPart::GetPartKind(Environment*) const
- {
- return fPartKind;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPart::GetPreferredKind
- //---------------------------------------------------------------------------------------
- inline FW_CKind* FW_CPart::GetPreferredKind(Environment*) const
- {
- return fPreferredKind;
- }
-
- //---------------------------------------------------------------------------------------
- // FW_CPart::PrivNeedPrepping
- //---------------------------------------------------------------------------------------
- inline void FW_CPart::PrivNeedPrepping(Environment*, FW_Boolean state)
- {
- fNeedPrepping = state;
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::RegisterPresentation
- //----------------------------------------------------------------------------------------
- inline FW_CPresentation* FW_CPart::RegisterPresentation(Environment *ev,
- ODType presentationType,
- FW_Boolean defaultPresentation,
- FW_CSelection* selection)
- {
- return RegisterPresentation(ev, presentationType, defaultPresentation, FW_kNoViewID, FW_kNoViewID, selection);
- }
-
- //----------------------------------------------------------------------------------------
- // FW_CPart::GetPartWindowFrame
- //----------------------------------------------------------------------------------------
- inline FW_CFrame* FW_CPart::GetPartWindowFrame(Environment*) const
- {
- return fPartWindowFrame;
- }
-
- #endif
-
-
-
-